package br.usjt.component.login.beans;

import static br.usjt.component.login.assembler.PerfilAssembler.toEntityAttached;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.inject.Inject;

import br.usjt.component.login.assembler.PerfilAssembler;
import br.usjt.component.login.dto.PerfilDTO;
import br.usjt.component.login.facade.PerfilBeanRemote;
import br.usjt.component.login.facade.dao.PerfilDao;
import br.usjt.component.login.model.Perfil;

@Stateless
@LocalBean
@Remote(PerfilBeanRemote.class)
public class PerfilBean extends AbstractBean implements PerfilBeanRemote {

    private static final long serialVersionUID = -3322745307736881660L;
    @Inject
    private PerfilDao dao;

    public PerfilBean() {
    }

    @Override
    public void salvar(PerfilDTO dto) {

        validarDTO(dto);
        Perfil perfil = new PerfilAssembler(dto).getEntity();
        dao.save(perfil);

    }

    @Override
    public void atualizar(PerfilDTO dto) {
        validarDTO(dto);
        Perfil perfil = new PerfilAssembler(dto).getEntity();

        Perfil perfilAttached = dao.findById(perfil.getId());
        toEntityAttached(perfil, perfilAttached);
        dao.update(perfilAttached);
    }

    @Override
    public List<PerfilDTO> consultarTodos() {

        List<Perfil> perfils = dao.findByAll();
        List<PerfilDTO> perfilsDto = new ArrayList<PerfilDTO>();

        for (Perfil perfil : perfils) {
            perfilsDto.add(new PerfilAssembler(perfil).getDto());
        }
        return perfilsDto;
    }

}
